<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Inmueble extends CI_Controller {
     function __construct(){
        parent::__construct();
        //$this->output->nocache();
        $this->load->model('inmueble_m');
        $this->load->model('generales_m');
        $this->load->library('form_validation');
        $this->form_validation->set_error_delimiters('<p class="text-error">', '</p>');
      }

      
      public function index(){
          //Si existe un inmueble cargado elimino el id de la sesion 
          $id_new_inmu = $this->session->userdata('id_new_inmu');
          if(!empty($id_new_inmu)){
              $this->session->unset_userdata('id_new_inmu');
          }
          $this->load->helper('date');
          $data['css']= array('style/jquery-ui-1.10.3.custom');
          $data['js']= array('select_anidados','vendor/jquery-ui-1.10.3.custom.min','main_datepicker');
          $data['title'] = 'Inmueble | Nuevo';
          $datestring = "%Y/%m/%d"; $time = time();
          $data_combo['hoy'] = mdate($datestring, $time);
          $data_combo['tipo_operacion'] = $this->generales_m->get_tipoperacion();
          $data_combo['tipo_inmueble'] = $this->generales_m->get_tipoinmu();
          $data_combo['pais'] = $this->generales_m->get_paises();
          $data_combo['orientacion'] = $this->generales_m->get_orientacion();
          $data_combo['disposicion'] = $this->generales_m->get_disposicion();
          $data_combo['luminosidad'] = $this->generales_m->get_luminosidad();
          $data_combo['estado_inmu'] = $this->generales_m->get_estadoinmu();
          $data_combo['moneda'] = $this->generales_m->get_moneda();
          //Estado del aviso o inmueble siempre al ingresar es 'Activo'
          $data_combo['id_estadv'] = $this->generales_m->get_idestadoadv('Activo');
          $data['content'] = $this->load->view('inmueble/v_new_imu',$data_combo,TRUE);
          $this->load->view('template/template-admin',$data);
      }
      
       /*
       * Insertar nuevo inmueble
       */    
      public function insert_inmu(){
          if ($this->form_validation->run('insertar_inmueble') == FALSE){
              $this->index();
           }else{
               $codigo_inmu = $this->input->post('codigo_inmu',TRUE);
               $fecha_ingreso = $this->input->post('fecha_ingreso',TRUE);
               $id_tope = $this->input->post('id_tope',TRUE);
               $id_tinmue = $this->input->post('id_tinmue',TRUE);
               $titulo_inmu = $this->input->post('titulo_inmu',TRUE);
               $desc_inmu = $this->input->post('desc_inmu',TRUE);
               $dire_inmu = $this->input->post('dire_inmu',TRUE);
               $id_zona = $this->input->post('id_zona',TRUE);
               $suptotal_inmu = $this->input->post('suptotal_inmu',TRUE);
               $supcubierta_inmu = $this->input->post('supcubierta_inmu',TRUE);
               $total_amb = $this->input->post('total_amb',TRUE);
               $id_orie = $this->input->post('id_orie',TRUE);
               $id_dispo = $this->input->post('id_dispo',TRUE);
               $id_lumi = $this->input->post('id_lumi',TRUE);
               $id_estainmu = $this->input->post('id_estainmu',TRUE);
               $id_mone = $this->input->post('id_mone',TRUE);
               $valor_inmu = $this->input->post('valor_inmu',TRUE);
               $id_estadv = $this->input->post('id_estadv',TRUE);
               
               $last_inmu_id = $this->inmueble_m->insert_inmu($codigo_inmu, $fecha_ingreso, $id_tope, $id_tinmue, $titulo_inmu, 
                             $desc_inmu, $dire_inmu, $id_zona, $suptotal_inmu, $supcubierta_inmu,
                             $total_amb, $id_orie, $id_dispo, $id_lumi, $id_estainmu, $id_mone, $valor_inmu, $id_estadv);
               $this->session->set_userdata('id_new_inmu',$last_inmu_id);
               redirect('inmueble/nuevo-paso2');
               }
          }
          
          /*
           * Paso 2 - Carga de datos adicionales del inmueble
           */
          public function addinmueble_step2(){
              $id_new_inmu = $this->session->userdata('id_new_inmu');
              if(!empty($id_new_inmu)){
                  $data['css']= array('bootstrap/bootstrapSwitch');
                  $data['js']= array('vendor/bootstrapSwitch');
                  $data['title'] = 'Inmueble | Nuevo - Paso 2';
                  $data_inmu['ambientes'] = $this->generales_m->get_ambientes();
                  $data_inmu['adicionales'] = $this->generales_m->get_adicionales();
                  $data_inmu['servicios'] = $this->generales_m->get_servicios();
                  $data['content'] = $this->load->view('inmueble/v_new_inmustep2',$data_inmu,TRUE);
                  $this->load->view('template/template-admin',$data);
                  }else{
                      redirect('inmueble/nuevo');
                      }
          }
          
          /*
           * Agrego los datos adicionales provenientes de los check a las tablas correspondientes
           */
          public function addinmueble_extras(){  
              $id_inmu = $this->session->userdata('id_new_inmu');
              if(!empty($id_inmu)){
                  
              $ambientes = $this->generales_m->get_ambientes();
              //en caso de que el usuario retroceda desde el navegador aseguro que no se guarden datos repetidos
              $contar_amb = $this->inmueble_m->count_inmuamb($id_inmu);
              if($contar_amb > 0){
                  $this->inmueble_m->delete_inmuamb($id_inmu);
                  }
              foreach ($ambientes as $amb) {
                  $campo = 'amb'.$amb->id_amb;
                  $id_amb = $this->input->post($campo);
                  if(!empty($id_amb)){
                      $this->inmueble_m->insert_inmuamb($id_inmu,$id_amb);
                  }   
              }
              //------------------------------------------------------------
              $adicionales = $this->generales_m->get_adicionales();
              $contar_adic = $this->inmueble_m->count_inmuadic($id_inmu);
              if($contar_adic > 0){
                  $this->inmueble_m->delete_inmuadic($id_inmu);
                  }
              foreach ($adicionales as $adic) {
                  $campo = 'adic'.$adic->id_adic;
                  $id_adic = $this->input->post($campo);
                  if(!empty($id_adic)){
                      $this->inmueble_m->insert_inmuadic($id_inmu,$id_adic);
                  }   
              }
              //--------------------------------------------------------------
              $servicios = $this->generales_m->get_servicios();
              $contar_serv = $this->inmueble_m->count_inmuserv($id_inmu);
              if($contar_serv > 0){
                  $this->inmueble_m->delete_inmuserv($id_inmu);
                  }
              foreach ($servicios as $serv) {
                  $campo = 'serv'.$serv->id_serv;
                  $id_serv = $this->input->post($campo);
                  if(!empty($id_serv)){
                      $this->inmueble_m->insert_inmuserv($id_inmu,$id_serv);
                  }   
              }
              redirect('inmueble/nuevo-paso3');
            
              }else{
                  redirect('inmueble/nuevo');
                 }
          }
          
          
          /*
           * Paso 3 - Upload de imagenes para el inmueble
           */
          public function addinmueble_step3(){
              $id_new_inmu = $this->session->userdata('id_new_inmu');
              if(!empty($id_new_inmu)){
                  $data['css'] = array('style/uploadifive');
                  $data['js'] =  array('vendor/jquery.uploadifive','main_upload');
                  $data['title'] = 'Inmueble | Nuevo - Paso 3';
                  //genero un id aleatorio paras el form y leo de la sesion si ya existe
                  $this->load->library('generales');
                  $id_form_aleatorio = $this->generales->generate_string(10);
                                    
                  $this->load->model('picture_m');
                  //Busco en la configuracion el max. permitido de imagenes a subir
                  $data_up['max_upload_img'] =  $this->picture_m->max_upload_img();
                  //Leo la variable de sesion por si se actualizo la pagina
                  $control_id_form = $this->session->userdata('id_formulario');
                  //si no existe lo agrego a la sesion (esto ocurrira la primera vez que se muestre el form)
                  if (empty($control_id_form)){
                      //Agrego a la sesion el id_formulario & maximo de imagenes permitidas
                      $user_data = array('id_formulario'  => $id_form_aleatorio,
                                         );
                      $this->session->set_userdata($user_data);
                  /*
                   * vuelvo a leer la variable de sesion para recuperar el nuevo valor y poder pasarlo
                   * al campo oculto del formulario desde donde es tomado por el script uploadifive del plugin.
                   */
                     $control_id_form = $this->session->userdata('id_formulario');
                    } 
                   /*
                   * contar cuantas imagenes hay con el $control_id_form ya subidas para realizar control
                   * de que no se suban mas de las permitidas.
                   */ 
                   $data_up['total_img_up'] = $this->picture_m->contar_img($control_id_form);
                  
                    if($data_up['total_img_up'] == 0){
                        $data_up['resto'] = $data_up['max_upload_img'];
                    }
                    elseif($data_up['total_img_up'] > 0){
                        $data_up['img_upload'] = $this->picture_m->search_img($control_id_form);
                        $data_up['resto'] = ($data_up['max_upload_img'] - $data_up['total_img_up']);
                        }

                $data_up['id_form_session'] = $control_id_form ;
                $data_up['id_inmu'] = $id_new_inmu ;
                
                $data['content'] = $this->load->view('upload/v_upload',$data_up,TRUE);
                $this->load->view('template/template-admin',$data);
                }else{
                    redirect('inmueble/nuevo');
                    }
          }
          
          /*
           * Asignacion del inmueble a un cliente.
           */
          public function addinmueble_step4(){
              $id_new_inmu = $this->session->userdata('id_new_inmu');
              if(!empty($id_new_inmu)){
                  $data['js']= array('vendor/jquery.dataTables1.9.4.min','main_datatable',);
                  $data['css']= array('style/datatable_bootstrap');
                  $data['title'] = 'Inmueble | Nuevo - Asignar Propietario';
                  $this->load->model('cliente_m');
                  $id_tclie1 = $this->generales_m->get_idtcliente('Inmobiliaria');
                  $id_tclie2= $this->generales_m->get_idtcliente('Propietario');
                  $estado_clie = $this->generales_m->get_valuestadoclie('Activo');
                  $data_clie['lista_clie'] = $this->cliente_m->list_clie_prop($id_tclie1, $id_tclie2,$estado_clie);
                  $data['content'] = $this->load->view('clientes/v_list_clie',$data_clie,TRUE);
                  $this->load->view('template/template-admin',$data);
              }else{
                  redirect('inmueble/nuevo');
              }
          }
          
          /*
           * Guardo los datos de un inmueble con su respectivo dueño.
           */
          public function insert_inmu_prop($id_inmu, $id_clie){
              $this->load->helper('date');
              $datestring = "%Y/%m/%d"; $time = time();
              $fecha_asig = mdate($datestring, $time);
              //si ya hay un propietario asignado al agregar uno nuevo cambia el estado y agrega el ultimo como actual.
              $countpropietario = $this->inmueble_m->count_inmuprop($id_inmu);
               if($countpropietario == TRUE){
                 $this->inmueble_m->update_inmuprop($id_inmu, $id_clie);                  
              }
              
              $this->inmueble_m->insert_inmu_prop($id_inmu, $id_clie, $fecha_asig);
              redirect('inmueble/info/'.$id_inmu);
          }
          
          /*
           * Esta funcion se utiliza cuando esta cargando un inmueble y se le debe asignar un propietario
           * Via jquery ajax traigo datos básicos para que se sepa que inmueble estoy asignando
           */
          public function miniresume_inmu($id_inmu){
              $data_inmu['inmu_data'] = $this->inmueble_m->get_inmue($id_inmu);
              $this->load->view('inmueble/v_inmue_miniresume',$data_inmu);
          }
          
          
          /*
           * Resumen del inmueble cargado.
           */
          public function resume_inmu($id_inmu){
              $this->load->library('googlemaps');
              $this->load->library('generales');
              //Borro los datos que se usaron en la carga del inmueble.
              $this->session->unset_userdata('id_new_inmu');
              $this->session->unset_userdata('id_formulario');
              $data['title'] = 'Inmueble | Resumen';
              $data_inmu['inmu_data'] = $this->inmueble_m->get_inmue($id_inmu);
              if(!empty($data_inmu['inmu_data'])){
                  $data['mapa'] = 'si';
                  $pais = $data_inmu['inmu_data']->nomb_pais;
                  $prov = $data_inmu['inmu_data']->nomb_prov;
                  $loca = $data_inmu['inmu_data']->nomb_loca;
                  $dire = $data_inmu['inmu_data']->dire_inmu;
                  $pais1 = $this->generales->sacarAcentos($pais);
                  $prov1 = $this->generales->sacarAcentos($prov);
                  $loca1 = $this->generales->sacarAcentos($loca);
                  $dire1 = $this->generales->sacarAcentos($dire);               
                  $coordenadas = $dire1.', '.$loca1.', '.$prov1.', '.$pais1;
                  //Configuracion de plugin googlemaps
                  $config['center'] = $coordenadas;
                  $config['zoom'] = '15';
                  $config['map_height'] = '350px';
                  $config['scrollwheel'] = FALSE;
                  $config['mapTypeControlStyle'] = 'DROPDOWN_MENU';
                  $config['geocodeCaching'] = TRUE;
                  $config['minifyJS'] = TRUE;
                  $this->googlemaps->initialize($config);
                  $marker = array();
                  $marker['position'] = $coordenadas;
                  $this->googlemaps->add_marker($marker);
                  $data_inmu['map'] = $this->googlemaps->create_map();
                  //Datos del inmueble
                  $data_inmu['inmu_data'] = $this->inmueble_m->get_inmue($id_inmu);
                  $data_inmu['inmu_amb'] = $this->inmueble_m->get_inmuamb($id_inmu);
                  $data_inmu['inmu_adic'] = $this->inmueble_m->get_inmuadic($id_inmu);
                  $data_inmu['inmu_serv'] = $this->inmueble_m->get_inmuserv($id_inmu);
                  $data_inmu['inmu_img'] = $this->inmueble_m->get_inmuimg($id_inmu);
                  $data_inmu['inmu_prop'] = $this->inmueble_m->get_inmuprop($id_inmu);
              }
              $data['content'] = $this->load->view('inmueble/v_inmue_resume',$data_inmu,TRUE);
              $this->load->view('template/template-admin',$data);
          }
          
          /*
           * Listado de inmuebles
           */
          public function list_inmu(){
              $data['js']= array('vendor/jquery.dataTables1.9.4.min','main_datatable');
              $data['css']= array('style/datatable_bootstrap');
              $data['title'] = 'Inmueble | Listado';
              //$data_inmu['lista_inmu'] = $this->inmueble_m->get_all_inmue();
              $data_inmu['lista_inmu'] = $this->inmueble_m->get_all_inmueprop();
              $data['content'] = $this->load->view('inmueble/v_list_inmu',$data_inmu,TRUE);
              $this->load->view('template/template-admin',$data);
          }
    
}//Fin clase inmueble.